#include <stdio.h>
#include <stdlib.h>

#define __deprecated

#define PASTE(a, b) a ## b
#define PASTE2(a, b) PASTE(a, b)
 
#define NARG_(_2, _1, n, ...) n
#define NARG(...) NARG_(__VA_ARGS__, 2, 1, ) 

void __kmap_atomic(int n)
{
	printf("%d\n",n);
	return;
}
 
static inline void kmap_atomic(int n)
{
     __kmap_atomic(n);
	 return;
}
 
static inline void __deprecated kmap_atomic_deprecated(int n,double fval)
{
	printf("%s is deprecated.\n",__func__);
	kmap_atomic(n);
	return;
}
 
#define kmap_atomic1(...) kmap_atomic(__VA_ARGS__)
#define kmap_atomic2(...) kmap_atomic_deprecated(__VA_ARGS__)
#define kmap_atomic(...) PASTE2(kmap_atomic, NARG(__VA_ARGS__)(__VA_ARGS__))

int main()
{
	printf("The file is %s.\n",__FILE__);
	printf("The date is %s.\n",__DATE__ );
	printf("The time is %s.\n",__TIME__ );
	printf("This is line %d.\n",__LINE__ );
	printf("This function is %s.\n",__func__ );

	kmap_atomic(10);
	kmap_atomic(10,1.1);
	return 0;
}
